#include "app_runner.h"
#include "app_pool.h"
#include "app_router.h"
#include "app_device.h"
#include "app_mqtt.h"
#include "log.h"
#include <app_bt.h>
#include <unistd.h>
#include "app_serial.h"
#include <signal.h>

static int is_running = 1;
static void app_runner_stop(int sig)
{
    is_running = 0;
}

int app_runner_run()
{
    // 注册终止信号的处理函数
    signal(SIGINT, app_runner_stop);  // ctrl + c
    signal(SIGTERM, app_runner_stop); // kill

    // 线程池
    app_pool_init();

    // 消息队列
    app_mqtt_init();
    // 路由
    app_router_init();

    // 一个设备
    Device *device = app_device_init(DEVICE_FILE);

    // 初始化 串口  初始化 蓝牙 配置
    app_serial_init(device);
    app_bt_init(device);

    // 注册 到 路由
    app_router_register_device(device);

    // 死循环
    while (is_running)
    {
        sleep(1);
    }

    // 收尾工作
    app_router_destroy();
    app_mqtt_close();
    app_pool_destroy();

    return 0;
}